<!-- 我的弹窗 -->

<template>
  <WebModal class="QuestionnaireList-MyModal" fullWide lastConfirm>
    <template #title="{ title }">
      <ModalTitle :title="title" />
    </template>

    <WebForm word5 @error="onError">
      <div class="QuestionnaireList-MyModal-panel">
        <MyBase v-show="one.tab === DICT.TAB[0][0]" />
        <MyQuestion v-show="one.tab === DICT.TAB[1][0]" />
        <MySend v-show="one.tab === DICT.TAB[2][0]" />
      </div>
    </WebForm>

    <template #footer>
      <ModalFooter />
    </template>
  </WebModal>
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

const ADD_EMPTY = { id: '', status: 2, endDate: undefined, stopTime: undefined }

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name: 'MyModal',

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [CORE.mixWeb()],

  /**
   * 组件导入 (Abc.vue + Abc/index.vue)
   */
  ...CORE.components(require.context('./', true, /vue$/)),

  /**
   * 监听属性 (深度 deep 首次 immediate)
   */
  watch: {
    /**
     * 监听新增弹窗
     */
    visible(visible) {
      visible && this.isAdd && CORE.merge(this.one, ADD_EMPTY)
    },
  },

  /**
   * 本地方法 (轻量重要在前)
   */
  methods: {
    /**
     * 校验错误
     */
    onError(data) {
      const keys = Object.keys(data)
      const index = keys.includes('title') ? 0 : 2
      this.one.tab = this.DICT.TAB[index][0]
    },
  },
}
</script>

<style lang="scss">
@import './index.scss';
</style>
